package com.mobile.dao;

import java.util.List;

import com.mobile.gridUtil.GridFilter;

public interface IBaseDAO {
	/**
	 * 获得总数
	 * @param cl				域模型的类
	 * @param gridFilterList	要过滤的列表值
	 * @return 返回整型值
	 */
	public int getTotalSize(Class cl,List<GridFilter> gridFilterList);
	/**
	 * 获得总数
	 * @param pojo				域模型的类
	 * @param gridFilterList	要过滤的列表值
	 * @return 返回整型值
	 */
	public int getTotalSize(Object pojo,List<GridFilter> gridFilterList);
	/**
	 * 
	 * @param start				开始读取的索引
	 * @param pageSize			总共读取的数目
	 * @param cl				域模型的类
	 * @param gridFilterList	要过滤的列表值
	 * @return					列表
	 */
	public List getPageList(int start,int pageSize,Class cl,List<GridFilter> gridFilterList);
	/**
	 * 
	 * @param start				开始读取的索引
	 * @param pageSize			总共读取的数目
	 * @param pojo				域模型的类
	 * @param gridFilterList	要过滤的列表值
	 * @return					列表
	 */
	public List getPageList(int start,int pageSize,Object pojo,List<GridFilter> gridFilterList);
	/**
	 * 删除多条记录
	 * @param cl			要删除的类的名称
	 * @param ids			要删除的数据的唯一码
	 */
	public void deleteById(Class cl,String[] ids);
	/**
	 * 根据唯一码删除一条记录
	 * @param cl			要删除的类的名称
	 * @param id
	 */
	public void deleteById(Class cl,String id);
	/**
	 * 保存数据
	 * @param pojo			保存数据的对象
	 * @return				返回改变的id
	 */
	public Object save(Object pojo);
	/**
	 * 保存或修改数据
	 * @param pojo			保存数据的对象
	 * @return				返回改变的id
	 */
	public Object merge(Object pojo);
	/**
	 * 通过唯一标识码来查找对象
	 * @param cl			域对象
	 * @param uniqueCode	唯一标识码
	 * @return
	 */
	public Object findById(Class cl,String uniqueCode);
	/**
	 * 获得所有数据
	 * @param cl				域模型的类
	 * @param gridFilterList	要过滤的列表值
	 * @return					列表
	 */
	public List getAllList(Class cl,List<GridFilter> gridFilterList);
	/**
	 * 获得所有数据
	 * @param pojo				域模型的类
	 * @param gridFilterList	要过滤的列表值
	 * @return					列表
	 */
	public List getAllList(Object pojo,List<GridFilter> gridFilterList);
	/**
	 * 获得符合pojo条件的数据
	 * @param pojo				域模型的类
	 * @return					列表
	 */
	public List getAllList(Object pojo);
	/**
	 * 修改数据
	 * @param pojo			保存数据的对象
	 */
	public void update(Object pojo);
}
